const login = require('../mongoDBConfig/login.js');
const md5 = require('../util.js').md5;
async function addUser(ctx) {
    let data = ctx.request.body;
    if (!data.username || !data.pwd) {
        ctx.resSend.setCode(100);
        ctx.resSend.setMsg('请正确输入账号或密码');
        return ctx.resSend.send();
    }
    const isaddUserSuc = await login.addUser(data);
    const msg = {
        '400': '服务器错误, 请稍后重试',
        '200': '用户名重复, 请确认',
        '0': 'success'
    }
    ctx.resSend.setCode(~~isaddUserSuc);
    ctx.resSend.setMsg(msg[isaddUserSuc]);
    ctx.resSend.send();
}

async function signIn(ctx) {
    let data = ctx.request.body;
    if (!data.username || !data.pwd) {
        ctx.resSend.setCode(100);
        ctx.resSend.setMsg('请正确输入账号或密码');
        return ctx.resSend.send();
    }
    const isfindUserSuc = await login.findInNameAndPwd(data);
    const msg = {
        '400': '服务器错误, 请稍后重试',
        '200': '用户名或密码错误, 请确认',
        '0': 'success'
    }
    if (typeof isfindUserSuc === 'object') {
        ctx.resSend.setCode(~~isfindUserSuc.type);
        ctx.resSend.setMsg(msg[isfindUserSuc.type]);
        ctx.set('token', isfindUserSuc.token); // = token;
    } else {
        ctx.resSend.setCode(~~isfindUserSuc);
        ctx.resSend.setMsg(msg[isfindUserSuc]);
    }
    ctx.resSend.send();
}

async function checkToken(ctx, next) {
    const reqType = ctx.method;
    if (reqType !== 'POST') {
        await next();
    } else {
        if (ctx.url === '/dataReport/login' || ctx.url === '/dataReport/signUp') {
            await next();
        } else {
            let msg = {
                '400': '服务器内部错误',
                '200': '登录失效, 请从新登录',
            }
            let token = ctx.header.token;
            console.log('获取到的token为', '\n', token);
            if (!token) {
                log.debug('请用户重新登录')
                ctx.resSend.setCode(200);
                ctx.resSend.setMsg(msg['200']);
                return ctx.resSend.send();
            }
            let isTokenOk = await login.findIntoken(token);
            if (isTokenOk === '0') {
                return await next();
            } else {
                ctx.resSend.setCode(~~isTokenOk);
                ctx.resSend.setMsg(msg[isTokenOk]);
                return ctx.resSend.send();
            }

        }
    }
}
module.exports = {
    addUser,
    signIn,
    checkToken
}